// 引入审核任务相关的数据类型（表单、查询参数、返回对象）
import type { AuditTaskForm, AuditTaskQuery, AuditTaskVO } from './model';

// 引入通用的ID类型、ID数组类型和分页结果类型，方便接口参数和返回值类型检查
import type { ID, IDS, PageResult } from '#/api/common';

// 引入通用的导出方法，用于导出Excel等文件
import { commonExport } from '#/api/helper';
// 引入请求客户端，用于发送HTTP请求到后端
import { requestClient } from '#/api/request';
import type { AuditTaskInfo, AuditTaskListParams, AuditTaskListResult } from './model';

enum Api {
  List = '/aibox/auditTask/list',
  Save = '/aibox/auditTask',
  Update = '/aibox/auditTask',
  Delete = '/aibox/auditTask/',
  Info = '/aibox/auditTask/',
  Submit = '/aibox/auditTask/submit'
}

/**
 * 查询审核任务列表
 * @param params 查询参数（可以分页、筛选）
 * @returns 审核任务列表（带分页信息）
 */
export const auditTaskList = (params: AuditTaskListParams) =>
  requestClient.get<AuditTaskListResult>(Api.List, { params });

/**
 * 导出审核任务列表
 * @param params 查询参数（可以分页、筛选）
 * @returns 导出文件（如Excel）
 */
export const auditTaskExport = (params?: any) => commonExport("/aibox/auditTask/export", params);

/**
 * 查询审核任务详情
 * @param taskId 审核任务的id
 * @returns 审核任务的详细信息
 */
export const auditTaskInfo = (id: string | number) => 
  requestClient.get<AuditTaskInfo>(`${Api.Info}${id}`);

/**
 * 新增审核任务
 * @param data 新任务的数据
 * @returns 操作结果（成功或失败）
 */
export const auditTaskAdd = (params: any) => 
  requestClient.post(Api.Save, { params });

/**
 * 更新审核任务
 * @param data 要更新的任务数据
 * @returns 操作结果（成功或失败）
 */
export const auditTaskUpdate = (params: any) => 
  requestClient.put(Api.Update, { params });

/**
 * 删除审核任务
 * @param taskId 要删除的任务id（可以是单个或多个）
 * @returns 操作结果（成功或失败）
 */
export const auditTaskRemove = (ids: string | number | (string | number)[]) =>
  requestClient.delete(`${Api.Delete}${ids}`);

export const auditTaskSubmit = (formData: FormData) =>
  requestClient.post<string>(Api.Submit, formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
